a = (10, 'alpha', [1, 2])
b = (10, 'alpha', [1, 2])
print(a == b)
b[-1].append(99)
print(a == b)
# tuple类似指针：只保证指向的对象不变化！对象的值可以改变

result = divmod(20, 8)
print(result)
t = 20, 8  # 无歧义情况下可以不加括号！
print(t)
# result = divmod(t) 需要两个参数，但t是一个，需要把t展开成两个！
result = divmod(*t)
print(result)

s = '1234567890'
ls = list(s)
ts = tuple(s)
print(ls, ts)
# 插入一点内容：将str转换成list和tuple的最简方法！

a, b, *rest = range(10)  # 无歧义情况下可以不加括号！
print(a, b, rest)
(a, b, *rest) = range(10)
print(a, b, rest)
a, *rest, b = range(10)  # 只截取第一个和最后一个元素
print(a, rest, b)
print(*range(10))  # range被展开成10个参数，print依次输出，以空格分隔
print(isinstance(1, int))
print(isinstance((1), int))  # 仅包含单元素的括号会被解释为运算符()
print(isinstance((1,), tuple))  # 增加一个逗号，指明括号是tuple的标注


def fun(a, b, c, d, *rest):
    return a, b, c, d, rest


print(fun(*[1, 2], 3, *range(4, 7)))

ls1 = list(range(10))  # 更好！
ls2 = [*range(10)]
print(ls1 == ls2)
# 两种等价的写法
